﻿using System;

namespace 数组
{
    class Program
    {
        static void Main(string[] args)
        {
            //声明数组的方式
            //new 运算符用于创建数组并将数组元素初始化为他们默认值。
            //在此例中，所有数组元素都初始化为零。
            //new new new new new new new new new new new new new new new new new new new new new new 
            //第一个声明方式
            //int[] numbers = new int[5];//[0.0.0.0.0.]五个数
            //numbers[0] = 10;//[10.0.0.0.0.]
            //numbers[1] = 11;//[10.11.0.0.0.]
            //numbers[2] = 12;//[10.11.12.0.0.]
            //numbers[3] = 13;//[10.11.12.13.0]
            //numbers[4] = 14;//[10.11.12.13.14]
            //string[] strs = new string[5] { "10", "11", "12", "13", "14" };
            // for (int i = 0; i < strs.Length ; i++)
            //{
            //  Console.WriteLine(strs[i]);
            //}
            //第二个声明方式
            //int[] numberss = new int[]{ 10, 11,12,13,14,};
            //简写方式
            //int[] numbersss = { 10, 11, 12, 13, 14 };//掌握，最常用的
            //第三个声明方式
            //可以声明一个数组变量不将其初始化，在给数组分配变量的时候必须使用new运算符。
            // int[] numberssss;
            ///numberssss = new int[5];


            //获取数组元素
            //当获取数组的元素索引超过数组的实际元素数，会报错。
            //GetValue GetValue GetValue GetValue GetValue GetValue GetValue GetValue GetValue GetValue
            //GerValue //一个获取数组元素的方法
            //GetValue 
            //获取数组元素使用console.writeline（numbers.getvalue（0））；
            //numbers[0] = 20;
            //Console.WriteLine(numbers[0]);
            // Console.WriteLine(numbers.GetValue(0));
            //修改数组元素的值
            // numbers[0] = 20;
            // numbers.SetValue(90,0);
            //Console.WriteLine(numbers[0]);
            //SetValue SetValue SetValue SetValue SetValue SetValue SetValue SetValue SetValue SetValue

            //遍历数组的两种方式
            //  for (int i = 0; i < numbers.Length; i++)
            //  {
            //      Console.WriteLine(numbers[i]);
            //  }
            //  foreach (var item in numbers)
            // {
            //    Console.WriteLine(item + "----");
            // }
            // 数组类型 { } 数组名字 = new 数组类型 { 数组长度 }；
            // int[] nums = new int[10];
            //数组的声明方式
            //  int[] numss = { 1, 2, 3, 4, 5, 6 };

            //二维数组的初始化
            //int [2,5];第一个元素表示他的维度，第二个元素表示每个维度内的元素个数。
            //int[,] array1 = new int[2, 5];
            //array1[0, 0] = 1;
            //array1[0, 1] = 11;
            //array1[0, 2] = 12;
            //array1[0, 3] = 13;
            //array1[0, 4] = 14;
            //array1[1, 0] = 2;
            //array1[1, 1] = 21;
            //array1[1, 2] = 22;
            //array1[1, 3] = 23;
            //array1[1, 4] = 24;
            ////初始化的第二种方式
            //int[,] array2 = new int[,] { { 1, 11, 12, 13, 14 }, { 2, 21, 22, 23, 24 } };
            ////初始化的第三种方式
            //int[,] array3 = { { 1, 11, 12, 13, 14 }, { 2, 21, 22, 23, 24 } };
            //foreach (var item in array3)
            //{
            //    Console.Write(item+"--");
            //}
            //多维数组
            //int[,,] array4 = new int[2, 3, 4];
            //array4[0, 0, 0] = 1;
            //array4[0, 0, 1] = 11;
            //array4[0, 0, 2] = 12;
            //array4[0, 0, 3] = 13;
            //array4[0, 1, 0] = 23;
            //array4[0, 1, 1] = 24;
            //array4[0, 1, 2] = 25;
            //array4[0, 1, 3] = 26;
            //array4[0, 2, 0] = 12;
            //array4[0, 2, 1] = 13;
            //array4[0, 2, 2] = 14;
            //array4[0, 2, 3] = 15;
            //array4[1, 0, 0] = 10;
            //array4[1, 0, 1] = 11;
            //array4[1, 0, 2] = 12;
            //array4[1, 0, 3] = 13;
            //多维数组声明2
            //int[,,] array5 = { { {1,11,12 }, {2,21,22 }, {3,31,32 }, {4,41,42 } }, { {5,51,52 }, {6,61,62 }, {7,71,72 }, {8,81,82 } } };
            //int[,,] array7 = new int[3, 2, 3];
            //foreach (var item in array5)
            //{
            //    Console.WriteLine(item);
            //}
            //获取多维数组的维度
            //int rank = array5.Rank;
            //Console.WriteLine(rank);
            //交错数组
            //第一种声明方式
            int[][] numbers = new int[2][];
           
            //初始化
            numbers[0] = new int[5]; //numbers[0]=创建了5个元素
            numbers[1] = new int[4]; //numbers[1]=创建了4个元素
            //赋值
            numbers[0][0] = 1;
            numbers[0][1] = 2;
            numbers[0][2] = 3;
            numbers[0][3] = 4;
            numbers[0][4] = 5;

            numbers[1][0] = 0;
            numbers[1][1] = 1;
            numbers[1][2] = 2;
            numbers[1][3] = 3;
            Console.WriteLine(numbers[1][0]);
            //第二种声明方式 ,声明的过程中进行初始化
            int[][] numbers3 = new int[][]
            {
                new int [4],
                new int [5]
            };
            //赋值
            numbers3[0][0] = 1;
            numbers3[0][1] = 2;
            numbers3[0][2] = 3;
            numbers3[0][3] = 4;
            numbers3[1][0] = 1;
            numbers3[1][1] = 2;
            numbers3[1][2] = 3;
            numbers3[1][3] = 4;
            numbers3[1][4] = 5;
            //第三种声明方式，初始化完成的时候赋值
            int[][] numbers2 =
            {
                new int []{1,2,3,4},
                new int []{0,1,2,3,4}
            };
            //遍历数组
            //获取交错数组的长度
            //交错数组的length 获取的是交错数组的元素个数
            Console.WriteLine(numbers2.Length);

            for (int i = 0; i < numbers2.Length; i++)
            {
                for (int j = 0; j < numbers2[i].Length; j++)
                {
                    Console.Write("{0}{1}",numbers2[i][j],j==(numbers2[i].Length-1)?"":"");
                }
            }
        Console.ReadKey();

        }
    }
}
